#include <iostream>
using namespace std;
//实验内容：
//定义一个Point类，包括两个私有属性：int x, int y，它们分别表示一个点的x和y座标。
//再定义构造函数：
//Point(int x, int y)，即传两个参数，构造一个点对象。
//注意，本题要求Point类不得定义缺省构造函数，也就是只定义以上所说的构造函数。
//定义一个Rectangle类，包括三个私有属性：Point topLeft, int width, int height，它们分别表示长方形左上角顶点的座标，以及横向的宽度和纵向的高度。
//注意：在计算机系统里，座标系如下定义：屏幕的左上角的座标是（0, 0），x轴是横轴，屏幕的最右端x值最大，y轴是纵轴，屏幕的最下方y值最大。
//再定义构造函数：
//Rectangle(int x, int y, int width, int height)
//以及实例方法：
//int getArea()    //获取该图形的面积
//bool isIn(Point p)   //判断传入的点是否在该图形之内（不包括边界），如果在内部返回true，否则返回false

class Point
{
    friend class Rectangle;
public:
    Point(int x, int y):_x(x),_y(y){}
private:
    int _x;
    int _y;
};

class Rectangle
{
public:
    Rectangle(int x = 0, int y = 0, int width = 0, int height = 0);
    int getArea();
    bool isIn(Point);
private:
    Point _topLeft;
    int _width;
    int _height;
};

Rectangle::Rectangle(int x, int y, int width, int height)
    :_topLeft(x, y)
    , _width(width)
    ,_height(height)
{}

int Rectangle::getArea()
{
    return _width * _height;
}

bool Rectangle::isIn(Point p)
{
    return p._x > _topLeft._x && p._x < _topLeft._x + _width
        && p._y > _topLeft._y && p._y < _topLeft._y + _height;
}

// 使用main函数测试以上getArea方法和isIn方法。
// main函数可参考如下代码：

int main()
{
    int topLeftX, topLeftY, width, height;
    int px, py;

    cin >> topLeftX >> topLeftY >> width >> height;
    cin >> px >> py;

    Point p(px, py);
    Rectangle r(topLeftX, topLeftY, width, height);

    cout << r.getArea() << endl;
    if (r.isIn(p))
        cout << "In" << endl;
    else
        cout << "Not in" << endl;

    return 0;
}
